﻿
using System;
using System.ServiceModel;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EnterpriseServices.Service
{
    /// <summary>
    /// 
    /// </summary>
    class GroupService : IGroupManager
    {

        #region IGroupManager Members

        /// <summary>
        /// Creates the parent group.
        /// </summary>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        /// <param name="groupType">Type of the group.</param>
        [OperationBehavior(TransactionScopeRequired = true)]
        public void CreateParentGroup(string userName, string group, GroupType groupType)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Creates the sub group.
        /// </summary>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="parentGroup">The parent group.</param>
        /// <param name="group">The group.</param>
        [OperationBehavior(TransactionScopeRequired = true)]
        public void CreateSubGroup(string userName, string parentGroup, string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Deletes the group.
        /// </summary>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        [OperationBehavior(TransactionScopeRequired = true)]
        public void DeleteGroup(string userName, string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Gets the groups for userName.
        /// </summary>
        /// <param name="userName">Name of the userName.</param>
        /// <returns></returns>
        public string[] GetGroupsForUser(string userName)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Gets the owners in group.
        /// </summary>
        /// <param name="group">The group.</param>
        /// <returns></returns>
        public string[] GetOwnersInGroup(string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Gets the contacts in group.
        /// </summary>
        /// <param name="group">The group.</param>
        /// <returns></returns>
        public string[] GetContactsInGroup(string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Gets the direct members in group.
        /// </summary>
        /// <param name="group">The group.</param>
        public string[] GetDirectMembersInGroup(string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Gets all eventual members in group.
        /// </summary>
        /// <param name="group">The group.</param>
        public string[] GetAllEventualMembersInGroup(string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Gets the sub groups in group.
        /// </summary>
        /// <param name="group">The group.</param>
        public string[] GetSubGroupsInGroup(string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Adds the contact to group.
        /// </summary>
        /// <param name="ownerUserName">Name of the owner userName.</param>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        [OperationBehavior(TransactionScopeRequired = true)]
        public void AddContactToGroup(string ownerUserName, string userName, string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Adds the owner to group.
        /// </summary>
        /// <param name="ownerUserName">Name of the owner userName.</param>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        [OperationBehavior(TransactionScopeRequired = true)]
        public void AddOwnerToGroup(string ownerUserName, string userName, string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Adds the direct member to group.
        /// </summary>
        /// <param name="ownerUserName">Name of the owner userName.</param>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        [OperationBehavior(TransactionScopeRequired = true)]
        public void AddDirectMemberToGroup(string ownerUserName, string userName, string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Removes the contact from group.
        /// </summary>
        /// <param name="ownerUserName">Name of the owner userName.</param>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        [OperationBehavior(TransactionScopeRequired = true)]
        public void RemoveContactFromGroup(string ownerUserName, string userName, string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Removes the owner from group.
        /// </summary>
        /// <param name="ownerUserName">Name of the owner userName.</param>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        [OperationBehavior(TransactionScopeRequired = true)]
        public void RemoveOwnerFromGroup(string ownerUserName, string userName, string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Removes the direct member from group.
        /// </summary>
        /// <param name="ownerUserName">Name of the owner userName.</param>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        [OperationBehavior(TransactionScopeRequired = true)]
        public void RemoveDirectMemberFromGroup(string ownerUserName, string userName, string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Removes the userName from groups.
        /// </summary>
        /// <param name="ownerUserName">Name of the owner userName.</param>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        [OperationBehavior(TransactionScopeRequired = true)]
        public void RemoveUserFromGroups(string ownerUserName, string userName, string[] group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Determines whether [is group enabled] [the specified group].
        /// </summary>
        /// <param name="group">The group.</param>
        /// <returns>
        /// 	<c>true</c> if [is group enabled] [the specified group]; otherwise, <c>false</c>.
        /// </returns>
        public bool IsGroupEnabled(string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Determines whether [the group exists] [the specified group].
        /// </summary>
        /// <param name="group">The group.</param>
        /// <returns>
        /// 	<c>true</c> if [the group exists] [the specified group]; otherwise, <c>false</c>.
        /// </returns>
        public bool GroupExists(string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Determines whether [is userName group owner] [the specified userName name].
        /// </summary>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        /// <returns>
        /// 	<c>true</c> if [is userName group owner] [the specified userName name]; otherwise, <c>false</c>.
        /// </returns>
        public bool IsUserGroupOwner(string userName, string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Determines whether [is userName group contact] [the specified userName name].
        /// </summary>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        /// <returns>
        /// 	<c>true</c> if [is userName group contact] [the specified userName name]; otherwise, <c>false</c>.
        /// </returns>
        public bool IsUserGroupContact(string userName, string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Determines whether [is userName direct member] [the specified userName name].
        /// </summary>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        /// <returns>
        /// 	<c>true</c> if [is userName direct member] [the specified userName name]; otherwise, <c>false</c>.
        /// </returns>
        public bool IsUserDirectMember(string userName, string group)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Determines whether [is userName eventual member] [the specified userName name].
        /// </summary>
        /// <param name="userName">Name of the userName.</param>
        /// <param name="group">The group.</param>
        /// <returns>
        /// 	<c>true</c> if [is userName eventual member] [the specified userName name]; otherwise, <c>false</c>.
        /// </returns>
        public bool IsUserEventualMember(string userName, string group)
        {
            throw new NotImplementedException();
        }

        #endregion

    }
}
